package Q16_24_Pairs_With_Sum; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; public class QuestionB { public static ArrayList<Pair> printPairSums(int[] array, int sum) { ArrayList<Pair> result = new ArrayList<Pair>(); HashMap<Integer, Integer> unpairedCount = new HashMap<Integer, Integer>(); for (int x : array) { int complement = sum - x; if (unpairedCount.getOrDefault(complement, 0) > 0) { result.add(new Pair(x, complement)); adjustCounterBy(unpairedCount, complement, -1); // decrement complement } else { adjustCounterBy(unpairedCount, x, 1); // increment x } } return result; } public static void adjustCounterBy(HashMap<Integer, Integer> counter, int key, int delta) { counter.put(key, counter.getOrDefault(key, 0) + delta); } public static void main(String[] args) { int[] test = {-1, -1, -1, -1, 0, 0, 0, 0, 1, 1}; ArrayList<Pair> pairs = printPairSums(test, -1); for (Pair p : pairs) { System.out.println(p.toString()); } } }